L'ottimizzazione nell'ambiente HIP deve essere trattata come una disciplina empirica rigorosa piuttosto che una serie di supposizioni intuitive. Adottando un flusso di lavoro sistematico, gli sviluppatori garantiscono che ogni modifica al codice sia giustificata dai dati, spostando l'ingegneria delle prestazioni lontano dalla "superstizione dell'ottimizzazione" verso un ciclo ripetibile e scientifico di ipotesi e verifica.
Il flusso di lavoro a 6 passi
Le linee guida per le prestazioni di HIP raccomandano una sequenza sistematica:
- Misurare un valore di riferimento: Determinare il tempo di esecuzione corrente e la produttività.
- Profilare il programma: Utilizzare
rocprofv3per raccogliere i contatori hardware. - Identificare il collo di bottiglia: Determinare se sei limitato dal calcolo, dalla memoria o dalla latenza.
- Applicare ottimizzazioni mirate: Concentrarsi solo sul collo di bottiglia identificato.
- Rimeasure: Verificare se il cambiamento ha effettivamente migliorato le prestazioni.
- Iterare: Ripetere il processo fino a raggiungere gli obiettivi.
Evita le superstizioni sull'ottimizzazione
I guadagni prestazionali dovrebbero essere risultati riproducibili da interazioni specifiche con l'hardware. Evita queste anti-pattern:
- Modificare il codice del kernel prima di misurare le prestazioni correnti.
- Regolare la dimensione del blocco senza sapere se il kernel è limitato dalla memoria.
- Cercare numeri di occupazione senza prova che abbiano importanza per il carico di lavoro specifico.
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>